package Algorithm.LinkList;

public class LinkList {
    public ListNode removeElements(ListNode head, int val) {

        //为什么不用if呢？删除掉头节点后，新的头节点的值仍然可能是val，所以要用while「精辟」
        while (head!=null && head.val == val){
//            ListNode delNode = head;
//            head = head.next;
//            delNode.next = null;
              head = head.next;
        }

        if(head == null){
            return null;
        }

        ListNode prev = head;      // --> 不能省略哦
        while (prev.next != null) {
            if (prev.next.val == val) {
//                ListNode delNode = prev.next;
//                prev.next = delNode.next;
//                delNode.next = null;
                  prev.next = prev.next.next;
            }else {
                prev = prev.next;
            }
        }
        return head;
    }

    public static void main(String[] args) {
        int[] nums = {1,2,3,2,7,9,4};
        ListNode listNode = new ListNode(nums);
        System.out.println(listNode);
        ListNode listNode1 = new LinkList().removeElements(listNode, 1);
        System.out.println(listNode1);
        }
}
